package com.atguigu.lease.common.minio;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.PropertyMapper;
import org.springframework.stereotype.Component;

/**
 * projectName: com.atguigu.lease.common.minio
 *
 * @author: 赵伟风
 * description: 专门存储minio的配置参数
 *
 * spring->核心容器-》 将我们对象交给ioc容器管理（@Controller @Service @Component），同时可以给我们的对象进行属性注入(@Autowired @Value @ConfigurationProperties)！！
 *
 * 总结：
 *    1. springboot框架的优势是什么？
 *        简化整合 ： starter -> 导入场景启动器 -> 具备了某个方向的所有依赖 （自动配置类 【142】）
 *        简化开发 ： springboot会自动按需将核心组件加入到ioc容器（0配置） -> 自动配置原理 -> 启动类 -> @EnableAutoConfiguration -> @Import -> ImportSelector -> 142
 *        简化配置 : springboot统一将配置管理在application的文件中！！ 不需要我们加载可以直接读取
 *    2. springboot整合带有场景启动器
 *        2.1 导入对方场景启动器 （spring-boot-starter-xx | xx-spring-boot-starter ）
 *        2.2 需要修改application配置参数（mybatis -> username password url driver）
 *        2.3 直接使用核心组件即可 RedisTemplate
 *    3. springboot整合不带场景启动器
 *        3.1 导入对方的普通依赖 （依赖所需要的依赖）
 *        3.2 单独创建一个接收参数的Properties类 + 使用springboot批量读取注解 @ConfigurationProperties(prefix = "自己约定前缀");
 *        3.3 单独创建一个配置类 + @Bean方法将第三方组件加入到ioc容器 + 接收参数的配置类XxxProperties声明！ @EnableConfigurationProperties（XxxProperties.class） [懒汉]
 *        3.4 正常声明配置参数
 *        3.5 正常使用核心组件对象
 *
 * 配置类怎么加入到容器：
 *   1.  @Component (MinioProperties)  [饿汉]
 *   2.  @EnableConfigurationProperties(XxxxProperties.class) (使用我们的配置类上！ MinioConfiguration) [懒汉 推荐]
 */
//@Component
@Data
@ConfigurationProperties(prefix = "minio")  //批量属性注入 @Value的增强版
public class MinioProperties {

    private String username ;
    private String password ;
    private String endpoint ;
    private String bucketName ;
}
